from abc import ABCMeta, abstractmethod
from typing import List, Dict

from hj_dataset_devkit import Frame

from model_frame import DetectObject

class ObjDetector(metaclass=ABCMeta):
    @abstractmethod
    def __init__(self) -> None:
        pass

    @abstractmethod
    def process_frame(self, frame: Frame) -> List[DetectObject]:
        pass

    @abstractmethod
    def process_frames_by_batch(self, frames: List[Frame], batch_size=8) -> Dict[int, List[DetectObject]]:
        pass
